// Copyright © SixtyFPS GmbH <info@slint.dev>
// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-1.2 OR LicenseRef-Slint-commercial

import { CupertinoPalette } from "styling.slint";

export component ProgressIndicator {
    in property <float> progress;
    in property <bool> indeterminate;

    min-height: 6px;
    horizontal-stretch: 1;
    vertical-stretch: 0;
    accessible-role: progress-indicator;
    accessible-value: root.progress;

    Rectangle {
        clip: true;
        border-radius: 3px;

        i-rail := Rectangle {
            border-radius: parent.border-radius;
            background: CupertinoPalette.alternate-control-background;
            border-width: 0.5px;
            border-color: CupertinoPalette.border;
            clip: true;

            Rectangle {
                border-width: 1px;
                border-color: @radial-gradient(circle, #00000026, #00000000);
                border-radius: parent.border-radius;
            }
        }

        i-track := Rectangle {
            width: !root.indeterminate ?  parent.width * min(1, max(0, root.progress)) : parent.width;
            height: 100%;
            x: !root.indeterminate ? 0px : -parent.width + (parent.width * mod(animation-tick(), 2s) / 1s);
            border-radius: parent.border-radius;
            background: CupertinoPalette.accent-background;
        }
    }
}
